<?php
/**
 * Created by PhpStorm.
 * @description:
 * @time:
 * @Author: yfl
 * @QQ 554665488
 * Date: 2017/10/13
 * Time: 21:57
 */
//http://blog.163.com/metlive%40126/blog/static/1026327120104232330131/
//echo ip2long('49.233.155.40');
$ip = '255.255.255.89';

//利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法分享  http://www.jb51.net/article/29962.htm
/**
 * @description: 把Ip地址转化为整数 算法一
 * @time:2017年10月13日22:29:31
 * @Author: yfl
 * @QQ 554665488
 * @param $ip
 * @return mixed
 */
function ip2int($ip)
{
    list($ip1, $ip2, $ip3, $ip4) = explode('.', $ip);
    return $ip1 * pow(256, 3) + $ip2 * pow(256, 2) + $ip3 * 256 + $ip4; //256*3次方
}

echo '<br>';
echo ip2int($ip);
//function ip2int2($ip)
//{
//    list($ip1, $ip2, $ip3, $ip4) = explode('.', $ip);
//    return ($ip1 << 24) | ($ip2 << 16) | ($ip3 << 8) | ($ip4);
//}
function _ip2int($ip)
{
    if (check_ip($ip)) {
        $intIp = ip2long($ip);
        if ($intIp < 0) {
            return sprintf('%u', $ip);
        } else {
            return $intIp;
        }
    }else{
        echo 'ip不合法';
    }
}

echo '<br>';
//echo ip2int2($ip);
echo sprintf('%u', ip2long($ip));
echo '<br>';
echo long2ip('4294967129'); //4294967129
function check_ip($ip)
{
    if (ip2long($ip) == false) {
        return false;
    }
    return true;
}

//var_dump(check_ip($ip));
/**
 * 我们会发现，有些ip转化成整数后，是负的，这是因为得到的结果是有符号整型，最大值是2147483647.要把它转化为无符号的，可以用
sprintf("%u",ip2long($ip);

就能转换为正整数。而且得到的结果用long2ip也可以正常转换回原来的ip地址。也可以用ip2long来验证一个ip是否是有效的，如
 */